package com.cd.university.db.mapper;

import com.cd.university.db.pojo.Project;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

@Mapper
public interface ProjectMapper {
    int deleteByPrimaryKey(Integer projectId);

    int insert(Project record);

    int insertSelective(Project record);

    Project selectByPrimaryKey(Integer projectId);

    int updateByPrimaryKeySelective(Project record);

    int updateByPrimaryKey(Project record);

    /**
     * 预先创建一个项目，目的是为了获得自增id
     * @param nowTime 当前时间戳
     * @return 自增id
     */
    public Integer advanceInsertProject(Project nowTime);

    /**
     * 根据项目的id集合查询所有的项目信息
     * @param projectIdList 项目id集合
     * @return 项目信息集合
     */
    public List<Project> searchProjectByProjectId(List<Integer> projectIdList);

    /**
     * 找到没有真正用到的项目
     * @return 没有用的项目主键id
     */
    public List<Integer> searchAdvanceProject();

    /**
     * 查询所有的项目
     * @return Project信息集合
     */
    public List<Project> searchAllProject();

    /**
     * 向表中插入
     * @param project 表的实体类
     * @return 插入的行数
     */
    public int insertAllProject(Project project);

    /**
     * 通过用户的id查询所有的已经通过复审的项目（即）结题的项目
     * @param userId 用户id
     * @return 项目的集合
     */
    public List<Project> searchFinalizeProjectByUserId(@Param("userId") Integer userId);

    /**
     * 删除预申请的项目
     */
    public void deleteAdvanceProject();

    /**
     * 查询所有的未审核的项目
     * @return 项目的集合
     */
    public List<Project> searchAllNotPassProject();

    /**
     * 通过项目的姓名修改项目的状态
     * @param param 项目姓名和状态id
     * @return 修改的行数
     */
    public int changeProjectStatus(HashMap param);

    Project searchProjectByProjectName(String projectName);
}
